<?php
/**
 * Participe
 */
class Participe extends CI_Model
{
	const TABLE_PARTICIPE				= 'participe';
	const ID_ACTION_PARTICIPE			= 'IDAction';
	const ID_ETUDIANT_PARTICIPE			= 'ETUDIANTID';
	const NOTE_PARTICIPE				= 'Note';
	const CONFIRMATION_FICHE_PARTCIPE	= 'ConfirmFiche';
	
     /**
     * @var integer
     */
    private $action;

    /**
     * @var string
     */
    private $etudiant;

    /**
     * @var integer
     */
    private $note;

    /**
     * @var boolean
     */
    private $confirmationFiche;
    
    
    public function __construct()
    {
    	parent::__construct();
    }
    
    
    /**
     * Fonction recuperant toute les notes des étudiants d'une action
     * @param int $idAction
     * @return objet Participe
     */
    public static function getNoteByAction($idAction)
    {
    	$CI = get_instance();
    
    	$CI->load->database('db_adc', true);
    
    	$resultat = $CI->db	->select(Participe::ID_ETUDIANT_PARTICIPE.', '.Participe::NOTE_PARTICIPE)
					    	->from(Participe::TABLE_PARTICIPE)
					    	->where(Participe::ID_ACTION_PARTICIPE, (int)$idAction)
					    	->get()
					    	->result_array();
    	 
    	$notes = array();
    	 
    	if(!empty($resultat))
    	{
    		foreach($resultat as $r)
    		{
    			$note = new Participe();
    			$note->setEtudiant($r[Participe::ID_ETUDIANT_PARTICIPE]);
    			$note->setNote($r[Participe::NOTE_PARTICIPE]);
    			
    			$notes[] = $note;
    		}
    	}
    	 
    	return $notes;
    }
    
    
    /**
     * Fonction permettant de modifier la note d'un étudiant d'une action
     * @param float $note
     */
    public function modifyNote($note)
    {
    	$idEtu = $this->getEtudiant()->getId();
    	$CI = get_instance();
    
    	$CI->load->database('db_adc', true);
    	
    	$CI->db->set(self::NOTE_PARTICIPE, $note);
    
    	$CI->db->where(array(self::ID_ACTION_PARTICIPE => (int)$this->getAction()->getId(),
    					self::ID_ETUDIANT_PARTICIPE => (int)$idEtu));
    
    	return $CI->db->update(self::TABLE_PARTICIPE);
    }
    
    /**
     * Fonction permettant de modifier la confirmation d'un étudiant d'une action
     * @param float $note
     */
    public function modifyEtuConfirm()
    {
    	$fba = FicheAction::findByIdAction($this->getAction()->getId());
    	
    	$idEtu=$this->getEtudiant()->getId();
    	$CI = get_instance();
    
    	$CI->load->database('db_adc', true);
    	 
    	$CI->db->set(self::CONFIRMATION_FICHE_PARTCIPE, 1);
    
    	$CI->db->where(array(self::ID_ACTION_PARTICIPE => (int)$this->getAction()->getId(),
    			self::ID_ETUDIANT_PARTICIPE => (int)$idEtu));
    
    	return $CI->db->update(self::TABLE_PARTICIPE);
    }
    
    /**
     * Fonction permettant de récupérer la confirmation d'un étudiant d'une action
     * @param float $note
     */
    public static function getEtuConfirm($id, $idEtu)
    {
    	$CI = get_instance();
    	
    	$CI->load->database('db_adc', true);
    	
    	$resultat = $CI->db	->select(Participe::CONFIRMATION_FICHE_PARTCIPE)
					    	->from(Participe::TABLE_PARTICIPE)
					    	->where(array(self::ID_ACTION_PARTICIPE => (int)$id,
    										self::ID_ETUDIANT_PARTICIPE => (int)$idEtu))
					    	->get()
					    	->result_array();
    	
    	return $resultat[0][Participe::CONFIRMATION_FICHE_PARTCIPE];
    }
    
    
    
    
    /**
     * Fonction permettant de récupérer toutes les notes de l'étudiant
     */
    public function getNotes($id)
    {
    	$CI = get_instance();
    
    	$CI->load->database('db_etudiant', true);
    	$CI->load->database('db_adc', true);
    	 
    	$resultat = $CI->db	->select(Participe::ID_ACTION_PARTICIPE.', '.Participe::NOTE_PARTICIPE)
					    	->from(Participe::TABLE_PARTICIPE)
					    	->where(Etudiants::ID_ETU, $id)
					    	->get()
					    	->result_array();
    	
    	$notes = array();
    	 
    	if(!empty($resultat))
    	{
    		foreach($resultat as $r)
    		{
    			$note = new Participe();
    			$note->setAction($r[ActionDeCommunication::ID_ADC]);
    			if(isset($r[Participe::NOTE_PARTICIPE]))
    				$note->setNote($r[Participe::NOTE_PARTICIPE]);
    			 
    			$notes[] = $note;
    		}
    	}
    	 
    	return $notes;
    }
    
    /**
     * Set note
     *
     * @param integer $note
     * @return Participe
     */
    public function setNote($note)
    {
        $this->note = $note;
    }

    /**
     * Get note
     *
     * @return integer 
     */
    public function getNote()
    {
        return $this->note;
    }

    /**
     * Set confirmationFiche
     *
     * @param boolean $confirmationFiche
     * @return Participe
     */
    public function setConfirmationFiche($confirmationFiche)
    {
        $this->confirmationFiche = $confirmationFiche;
    }

    /**
     * Get confirmationFiche
     *
     * @return boolean 
     */
    public function getConfirmationFiche()
    {
        return $this->confirmationFiche;
    }

    /**
     * Set action
     *
     * @param integer $id l'ID de l'action
     * @return Forum
     */
    public function setAction($id = null)
    {
        $this->action = $id;
    }

    /**
     * Get action
     *
     * @return ActionDeCommunication 
     */
    public function getAction()
    {
        return ActionDeCommunication::findById($this->action);
    }

    /**
     * Set etudiant
     *
     * @param string $login Le login de l'étudiant
     * @return Forum
     */
    public function setEtudiant($id)
    {
        $this->etudiant = $id;
    }

    /**
     * Get etudiant
     *
     * @return Etudiants 
     */
    public function getEtudiant()
    {
        return Etudiants::findById($this->etudiant);
    }
}
